/*
 * 28-abr-2007 
 */
package futbol.tacticas.concursantes2007.Chuky.chuky.futbolista;

import java.awt.Point;
import java.util.ArrayList;

import futbol.General;

/**
 *
 * @author Joan Crosas
 */
public class AnalizadorGolpeBalon {
	private Futbolista futbolista;
	private Point punto;
	
	/**
	 * 
	 */
	public AnalizadorGolpeBalon( Futbolista futbolista, Point punto ) {
		this.futbolista = futbolista;
		this.punto = punto;
	}
	
	public Pase analizar() {
		double alfa, distanciaPunto;
		Point posicion = futbolista.getPosicion();
		Point posicionBalon = futbolista.getBalon().getPosicionBalon();
		distanciaPunto = posicion.distance( punto );
		alfa = General.getAngulo( posicionBalon.x, posicionBalon.y, punto.x, punto.y );
		
		// creamos un baln ficticio
		Balon balon = new Balon( posicionBalon, alfa, futbolista.getFuerza()*3 );
		
		int t = 0;
		ArrayList<InfoPosicion> infoPosiciones = new ArrayList<InfoPosicion>();
		posicionBalon = balon.getPosicionBalon();
		double distanciaBalon = posicion.distance( posicionBalon );
		while( distanciaBalon < distanciaPunto && t < balon.getVelocidadBalon() ) {
			InfoPosicion infoPosicion = new InfoPosicion( posicionBalon, futbolista.getPosicionAmigos(), futbolista.getPosicionEnemigos() );
			infoPosiciones.add( infoPosicion );
			
			t++;
			posicionBalon = balon.getPosicionFutura( t );
			distanciaBalon = posicion.distance( posicionBalon );
		}
		
		InfoPase infoPase = new InfoPase( infoPosiciones );
		
		Pase pase = new Pase();
		pase.setAngulo( alfa );
		pase.setDistancia( distanciaPunto );
		pase.setFutbolista( futbolista );
		pase.setInfo( infoPase );
		
		return pase;
	}

}
